package sort;

/**
 * @Author wangtengyu
 * @Create 2018-09-10-9:38 选择排序 要点: 1.每一次排序，最小元素在最小索引处 2.每一次与最小元素后面的比较即可 3.如果当前元素是在最小索引处，
 */
public class SelectSort {

  public void sort(int[] array) {
    for (int i = 0; i < array.length; i++) {
      //减少交换次数，本来是判断一次就交换一次，现在是根据索引，最后只交换一次
      int min = i;
      for (int j = i + 1; j < array.length; j++) {
        if (array[j] < array[min]) {
          min = j;//此处只交换索引了。
        }
      }

      if (i != min) {
        int temp = array[i];
        array[i] = array[min];
        array[min] = temp;
      }

      System.out.print("第" + (i + 1) + "轮排序的结果为");
      printArray(array);
      System.out.println();
    }
  }


  public void printArray(int[] array) {
    for (int i = 0; i < array.length; i++) {
      System.out.print(array[i] + " ");
    }
  }

  public static void main(String[] args) {
    SelectSort selectSort = new SelectSort();
    int[] array = new int[]{1, 3, 2, 56, 32, 43, 12};
    selectSort.sort(array);
  }


}
